class Teacher:
    school = 'buzaoya'
    xxx = '我是类的属性，也可能是对象的属性'
    yyy = 111
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
    def course(self):
        print('course')
        print('我是小白的属性%s' % self.name)
        print('我是小白的属性%s' % self.age)
        return '11111'

if __name__ == '__main__':
    longzai = Teacher("龙仔",18,'男')
    金巴 = Teacher("金巴",18,'男')
    xishi = Teacher("西施",18,'女')

    # 对象属性的查找
    # 添加一个对象属性
    # longzai.xxx = '我是对象属性'
    # print(longzai.xxx) # 我是对象属性

    # 优先使用，对象定义好的实例属性。如果没有， 则去找类属性
    """print(longzai.xxx)  # 我是对象属性
    print(金巴.xxx)
    print(Teacher.xxx)"""

    # 调用course方法，只能是类对象/实例对象 去调用
    """金巴.course()
    longzai.course()"""

    #如果是通过类直接调用。很抱歉，你需要传递一下类对象
    """Teacher.course(xishi)"""

    # 类的属性变化对类和对象的影响
    Teacher.yyy = 333
    # print(Teacher.yyy) # 333

    # 对象改类的属性。不是真正的改掉类属性，是给对象增了一个对象属性
    xishi.yyy = 222
    # print(xishi.yyy)

    # 再回头看
    # print(Teacher.yyy) # 没有改掉

    # 查看所有属性：类、对象
    # print(Teacher.__dict__)
    # print(xishi.__dict__)

    # 查看内存空间
    print(id(xishi.yyy))
    print(id(Teacher.yyy))

